Mobile computing devices such as personal digital assistants, contemporary mobile telephones, hand-held and pocket-sized computers, tablet personal computers and the like are becoming important and popular user tools. In general, they have become small enough to be extremely convenient, while consuming less battery power, and at the same time have become capable of running more powerful applications.
Via a remote connection, various messages such as email messages can be sent and received. Other types of messages that may be sent and received include Short Message Service (SMS) messages, a standard for sending short alpha-numeric messages (maximum 160 characters) to or from mobile phones in mobile communications networks. Such devices are able to store their received and other user data locally and/or by connecting to networks, including the Internet. In general, these computers and computer-based mobile telephones (such as those running Microsoft Windows® Mobile software for Smartphones) allow users to make conventional mobile telephone calls, access the Internet, send and receive messages including attachments, store contacts, maintain appointments and do many other things contemporary desktop computers can now do.
However, mobile devices have limited resources, including storage and bandwidth. As a result, certain types of server data are not feasible to download and maintain in their entirety. By way of example, consider the POP3 protocol used with email messages. If a user wants to have only some subset of those messages loaded into the device instead of the full set in order to save memory, such as only those messages received within the last three days, it is necessary for the device to evaluate the messages and discard the unwanted ones. This is because the POP3 protocol does not provide a command which allows an e-mail client to tell an incoming mail server to limit the download of email messages. However, if a user has a lot of such messages, regularly downloading the message data for filtering purposes is exasperating because of the limited bandwidth. For example, to determine the date of a POP3 message, data on the order of two kilobytes of data is downloaded for that message; if, as with many users, there are thousands of messages that each need to be processed for such filtering, data on the order of millions of bytes needs to be downloaded, which takes a considerable amount of time. In fact, with this type of filtering, a partial download might take as long as a full download. What is needed is a way for devices to efficiently download a subset of data from servers for filtering, when the filtering needs to be done at the client side, e.g., the communication protocol is not configured for communicating filtering information to the servers.